package main

import (
	"fmt"
)

//异常
func main() {
	fmt.Println("examp15")
	test()
	defer func() {
		fmt.Println("1")
	}()
	defer func() {
		fmt.Println("2")
	}()
	fmt.Println("我还会执行的")
}

func test() {
	defer func() { //一搬将可能现在错误的地方函数里使用recover来恢复
		fmt.Println("整个函数执行完才进到这里")
		if err := recover(); err != nil { //这里调用recover来获得panic异常,如果没有panic err=nil
			fmt.Println("panic传入的值", err) //这里的err接收的就是panic传入的值
		}
	}()

	fmt.Println("a")
	fmt.Println("b")
	defer func() {
		fmt.Println("3")
	}()
	panic("使用panic就出错了") //出现这个 函数就执行完了
	fmt.Println("c")     //这里没执行到
}
